Processing 3d objects

ABSTRACT

In an example implementation, a method of processing a 3D object includes receiving a 3D object model representing a new 3D object to be processed. The method includes computing attributes of the object and comparing the object attributes with stored object attributes from previously processed 3D objects. When the comparison provides a match between the object attributes and stored object attributes, then a print recipe associated with the matching stored object attributes is retrieved.

BACKGROUND

Additive manufacturing generally refers to processes that use digitaldata models to define objects that are fabricated by adding material,layer upon layer. Additive manufacturing encompasses a range ofthree-dimensional (3D) printing technologies includingstereolithography, digital light processing, fused deposition modeling,and selective laser sintering. When compared to other manufacturingprocesses such as machining and injection molding, additivemanufacturing processes enable increased complexity and customization ofobjects. The increased complexity and customization enabled by additiveprocesses apply to both external object characteristics, such as shape,texture, and color, as well as internal object characteristics, such asstrength, elasticity, and material composition. Thus, additivemanufacturing processes such as 3D printing enable the production ofheterogeneous objects that can meet virtually any design objectivethrough interior object volumes that comprise different materials,varying material densities, varying arrangements of empty and filledvolume spaces, and so on.

BRIEF DESCRIPTION OF THE DRAWINGS

Examples will now be described with reference to the accompanyingdrawings, in which:

FIG. 1 shows an example of a 3D printing system for processing 3Dobjects that is suitable to perform an automatic comparison of twoheterogeneous 3D objects to enable the retrieval and reuse of apreviously created print recipe;

FIGS. 2, 3, 4, and 5, show different example steps in an examplenormalization process of an example 3D object model.

FIGS. 6a and 6b show an example representation of an imaginary planeused to slice through an 3D object to form an example object layerperpendicular to a Z axis;

FIG. 7 shows an example of an object layer sliced with the resolution ofa voxel and divided into N-by-N matrix elements; and,

FIGS. 8, 9, and 10, show example flow diagrams of example methods forprocessing a 3D object.

Throughout the drawings, identical reference numbers designate similar,but not necessarily identical, elements.

DETAILED DESCRIPTION

Providers of three-dimensional (3D) printing services produce objectsaccording to 3D object model data received from customers. The 3D objectmodel data can specify various object attributes or properties requestedby the customer, such as the object's shape, size, color, strength,elasticity, material composition, and so on. A 3D print service provider(PSP) can use the specified object attributes to design a print recipe(i.e., fabrication recipe) that can be used to generate a heterogeneous3D object that achieves the specified object attributes. The printrecipe can then be processed to generate instructions that areexecutable by a 3D printing device to print the physical 3D object.

Generating a print recipe for each new incoming object involvessignificant processing of the 3D object model data received from acustomer. For each new 3D object model received, data slices can betaken through the data structure with each slice representing an imageor an array of pixels. Each pixel can contain an array of attributevalues, with each value representing a property, such as whether thepixel is on the inside or the outside of the object. For each pixel thatis represented by an array of attribute values that represent differentproperties, a material can be selected from a material library. A set ofprinting process settings can be chosen to deposit the selected materialonto the pixel under a selected printing condition that results inphysical properties that match the values specified by the array ofproperties associated with the pixel. Printing process settings caninclude many different parameters including, for example, the layerthickness of the selected material, the type of fusing or binding agentto apply to the material, the amount of fusing agent to apply, theapplication resolution to use when applying the agent, the amount offusing energy to apply to the print bed, the duration and intensity offusing energy applications, and so on. For all the slices and all thepixels, the material and process conditions are determined.Collectively, these material and process conditions form the printrecipe.

Unfortunately, generating a print recipe to control the fabrication ofeach new incoming heterogeneous 3D object can be time consuming andcostly. In some examples, generating a print recipe can take severaliterations. Thus, reusing previously generated print recipes can helpprint service providers reduce the time and cost associated withgenerating print recipes for each new incoming 3D object. Accordingly,examples of processing 3D objects described herein provide forefficient, effective, automatic comparison of two heterogeneous 3Dobjects to enable maximum reuse of previously created print recipes. Thereuse of previously generated print recipes minimizes print processvariations and shortens the overall recipe development time for printservice providers. The automatic comparison of incoming heterogeneousobject models to previously created objects includes geometriccomparisons as well as comparisons of all material properties storedwithin the volumetric interiors of previously created objects. Theautomatic comparisons help to maximize the reuse of previously generatedprinting recipes by selecting the most similar parts that have beenfabricated previously and using their print recipes as “blue prints” fornew incoming objects.

In a particular example, a method of processing a 3D object includesreceiving a 3D object model representing a new 3D object to beprocessed. The method includes computing attributes of the object andcomparing the object attributes with stored object attributes frompreviously processed 3D objects. When the comparison provides a matchbetween the object attributes and stored object attributes, then a printrecipe associated with the matching stored object attributes isretrieved. The print recipe can be used as a guide to printing the new3D object.

In another example, a non-transitory machine-readable storage mediumstores instructions that when executed by a processor of a system forprocessing a 3D object, cause the system to receive digital datarepresenting a new object to be printed, and to normalize an alignmentof the new object to enable a comparison of attributes of the new objectwith previous object attributes stored in a memory of the system. Thesystem further computes attributes of the new object and comparesattributes of the new object with previous object attributes. When amatch is found between the new object attributes and the previous objectattributes, the system retrieves a print recipe associated with thematching previous object attributes and prints the new object using theprint recipe. When no match is found, the system generates a new printrecipe for the new object and prints the new object using the new printrecipe.

In another example, a 3D printing system for processing 3D objectsincludes a memory device comprising previous object attributes andassociated previous object print recipes from previously processed 3Dobjects. The printing system further includes a processor programmedwith instructions from an attribute module that are executable by theprocessor to compute attributes of an incoming object model thatrepresents a new 3D object. The instructions are further executable bythe processor to compare the incoming object attributes with theprevious object attributes and to retrieve a previous object printrecipe when a match is found. The printing system includes a 3D printengine to print the new 3D object based on the retrieved previous objectprint recipe.

FIG. 1 shows an example of a 3D printing system 100 for processing 3Dobjects that is suitable to perform an automatic comparison of twoheterogeneous 3D objects to enable the retrieval and reuse of apreviously created print recipe. As shown in FIG. 1, an example 3Dprinting system 100 can include a controller 102 with a processor (CPU)104 and a memory device 106. The memory 106 can include both volatile(i.e., RAM) and nonvolatile memory components (e.g., ROM, hard disk,optical disc, CD-ROM, magnetic tape, flash memory, etc.). The componentsof memory 106 comprise non-transitory, machine-readable (e.g.,computer/processor-readable) media that can provide for the storage ofmachine-readable coded program instructions, data structures, programinstruction modules, JDF (job definition format), and other data and/orinstructions executable by a processor 104 of the 3D printing system100. In some examples the controller 102 may additionally include otherelectronics (not shown) for communicating with and controlling variouscomponents of the 3D printing system 100. Such other electronics caninclude, for example, discrete electronic components and/or an ASIC(application specific integrated circuit).

Examples of executable instructions to be stored in memory 106 includeinstructions associated with an attribute module 108 and a print recipemodule 110. Examples of data stored in memory 106 can include incomingobject model data 112, incoming object model attributes 114, priorobject attributes 116, and prior object print recipes 118. In general,modules 108, 110, 112, 114, 116, and 118, include programminginstructions and/or data executable by a processor 104 to cause thecontroller 102 of 3D printing system 100 to perform operations relatedto printing 3D objects through the control of a 3D print engine 120.Moreover, such programming instructions and data can be executable toperform operations that compare two heterogeneous 3D objects to enablethe retrieval and reuse of a previously created print recipe, asdescribed in more detail below.

Thus, the controller 102 can control various operations of the 3Dprinting system 100 to facilitate the printing of 3D objects with a 3Dprint engine 120. In different examples, a 3D print engine 120 mayimplement different 3D printing technologies that use incoming objectmodel data 108 to print 3D objects through additive, layer-by-layerprocesses. Different 3D printing technologies can use differentmaterials, components, and methods to create 3D objects. Such 3Dprinting technologies can include, but are not limited to,stereolithography (SLA), selective laser sintering (SLS) color-jetprinting (CJP), fused deposition modeling (FDM), multi-jet printing(MJP), and direct metal sintering (DMS). Thus, the 3D printing system100 is not limited to a particular type of 3D printing technology.Rather, different examples of the 3D printing system 100 may print 3Dobjects using any of a variety of different 3D printing technologies.

In one example, the 3D print engine 120 implements an additive,layer-by-layer print process that spreads thin layers of powdered buildmaterial over a print platform within a work area. Thus, the printengine 120 can include a supply of powdered material and a spreader(e.g., a blade or roller) to repeatedly spread material as layers of a3D object are formed. The print engine 120 can include a liquid agentdispenser such as a drop-on-demand printhead to enable the selectivedelivery of a fusing agent or other liquid where the powdered materialparticles are to fuse together. The print engine 120 can further includea source of fusing energy, such as a heating lamp or other radiationsource, to provide fusing energy that can fuse together the powderedmaterial in those areas where fusing agent has been dispensed.

Referring still to FIG. 1, in addition to controlling the 3D printengine 120 to create 3D objects, controller 102 can execute instructionsfrom modules 108 and 110 with regard to data in modules 112, 114, 116,and 118, to perform operations that can automatically compare twoheterogeneous 3D objects to enable the retrieval and reuse of apreviously created print recipe. As noted above, the reuse of printrecipes for fabricating/printing new incoming heterogeneous 3D objectscan save time and costs for 3D print service providers. A print recipegenerally comprises a collection of material and printing processconditions generated based on object attributes and properties computedfrom 3D object model data. The collection of material and printingprocess conditions (i.e., the print recipe) prescribe how the 3D printengine 120 will operate or be controlled to enable printing/fabricationof a 3D object whose attribute values and/or physical properties complywith the incoming 3D object model data. The print recipe can beprocessed to generate instructions executable by controller 102 thatcontrol the 3D print engine 120.

When incoming 3D object model data 112 is received by the 3D printingsystem 100, controller 102 can execute instructions from attributemodule 108 to compute attributes of the 3D object from the object modeldata 112. Geometric and material property attributes of the outsidesurface and the volumetric interior of the 3D object can be computed.When attributes of the incoming 3D object model are computed, they canbe compared with previously computed object attributes 116 frompreviously printed 3D objects. When object attributes from a previousobject are found that match the incoming 3D object model, a previouslygenerated print recipe 118 associated with the matching previous objectattributes can be retrieved and used as a basis for printing theincoming 3D object. Thus, the previous object attributes 116 andprevious object print recipes 118 operate within memory 106 as a“key-value pair” in which the previous object attributes 116 provideunique identifiers for previous object print recipes 118.

Computing attributes of an incoming 3D object model 112 can begin with anormalization process that aligns the incoming 3D object in a mannerthat is consistent with the alignment of the previously printed objectswhose previous print recipes 118 are stored in memory 106. Thenormalization process to align an incoming 3D object ensures thatattribute comparisons made between attributes of the incoming 3D objectand previous object attributes are quantitatively equal so thatattribute matches can be discovered. In some examples, normalization canbe achieved through a default alignment that relies on data in theincoming 3D object model data 112. With a default alignment, anassumption is made that each incoming object is described in the sameway and with the same order of voxels (voxels are discussed below withreference to FIGS. 6 and 7). Such a default alignment makes itunnecessary to determine the alignment by another normalization process.In some examples, however, a normalization process can be used to alignincoming 3D objects. FIGS. 2, 3, 4, and 5, show an example of anincoming 3D object model being normalized in an example normalizationprocess. Referring to FIG. 2, an incoming 3D object model 122 can beoriented with respect to (i.e., placed on) a 3D coordinate system 124having X, Y, and Z axes. The incoming 3D object model 122 shown in FIGS.2-5 as a rectangular shaped box is intended as a simple example of anincoming 3D object to help illustrate the steps of a normalizationprocess. Actual 3D objects that may be received can comprise an infinitevariety of shapes with a wide range of complexity.

Upon receiving an incoming 3D object model 122 and orienting it on a 3Dcoordinate system 124, the center of mass of the object can be computed.The 3D object model 122 can then be translated with respect to thecoordinate system such that its center of mass is placed at the origin126 of the coordinate system 124, as shown in FIG. 3. As further shownin FIG. 3, the object 122 can then be rotated about the origin 126 suchthat the shortest dimension of the object is aligned with the Z axis.FIG. 4 shows an example position of the object 122 on the coordinatesystem 124 after it has been rotated to minimize its Z-axis dimension.The rotation direction 128 shown in FIG. 3 is an example rotationdirection, and other rotation directions may be possible and/orappropriate to minimize the Z-axis dimension of the object 122.Referring to FIGS. 4 and 5, the object 122 can then be rotated about theZ-axis such that the longest dimension of the object 122 is aligned withthe X-axis. FIG. 5 shows an example position of the object 122 on thecoordinate system 124 after it has been rotated to orient its longestdimension along the X-axis. The rotation direction 130 shown in FIG. 4is an example rotation direction, and other rotation directions may bepossible and/or appropriate to align the longest dimension of the object122 with the X-axis.

Once the incoming 3D object model 122 is properly oriented on a 3Dcoordinate system 124, a minimum bounding box can be computed for theobject. Again, while the example 3D object model 122 in FIGS. 2-5 isshown as a rectangular box, other examples of incoming 3D object modelsmay comprise complex geometries. Thus, computing a minimum bounding boxfor such an incoming 3D object model determines a smallest box intowhich the incoming object can fit within, regardless of the shape of theobject. In some examples, the bounding box for the object can then belinearly scaled such that the bounding box is a unit length.

The particular normalization alignment process discussed above isprovided by way of example, and not by way of limitation. Thus, in someexamples, different steps and selections within such a normalizationprocess can be altered to achieve appropriate alignment outcomes. Forexample, the selection or specification of which axes are used isarbitrary so long as the relative orientations remain the same and solong as each incoming 3D object model is aligned in the same manner.Furthermore, other guides for selecting object orientation (e.g., basedon desired object strength), can also be used. Such guides performequally well in normalizing incoming 3D objects as long as the outcomeis deterministic.

After normalization, the 3D object 122 can be sliced into object layersperpendicular to the Z axis. FIGS. 6a and 6b show an examplerepresentation of an imaginary plane 132 used to slice through the 3Dobject 122 to form an object layer 134 that is perpendicular to the Zaxis. Each Z slice object layer 134 is sliced with the resolution of avoxel 136 (FIG. 7). In general, a voxel 136 can represent a volumeelement of an array of elements that constitutes a three-dimensionalspace. Each Z slice layer 134 can be described by a matrix such that amatrix element corresponds to a voxel 136 as shown in FIG. 7. Thus, eachZ slice layer 134 can be divided into N-by-N elements, or blocks (e.g.,100×100 blocks). Each matrix element or voxel can be further describedby an aggregate of material properties/attributes in a predefined order.

For an incoming 3D object model 112 to be printed, various attributescan be computed. Bounding boxes, as discussed above, can be computed.Bounding boxes can include a 3D bounding box of a whole object 122, aswell as 2D bounding boxes of every Z slice 134 of an object. The minimumand maximum values of each attribute of the whole object 122, every Zslice 134, and every voxel/block 136, can be computed. Valuedistributions of each attribute within each set of voxels 136 can becomputed. For example, this can include a histogram for eachproperty/attribute. These distributions can be computed in ahierarchical manner. For example, a histogram can be computed from anattribute of the whole object, every Z slice, and every voxel/block. Forcomputing a distribution, the range (min., max.) of the attribute valuecan be divided into M uniform intervals, and if a value falls within aspecific interval, the corresponding counter can be increased by one.The distribution can be normalized such that all the entries sum up toone. This normalized distribution can be viewed as a probabilitydistribution of the corresponding attribute within a set of voxels.

Various metrics can be used to compute the distance between twomeasures. For example, the distance between two intervals of real valuescan be computed as the Hausdorff distance. The Hausdorff distance can beused to compute the distance between two intervals [v1,v2] and [v3,v4]as follows:

d=max(|v ₃ −v ₁ |,|v ₄ −v ₂|)

With this metric, the distance is zero when the two intervals completelyoverlap. In another example, for two normalized distributions, there aremany statistical distance measures that can be used. Examples of suchstatistical distance measures include Euclidean, Bhattacharyya, andEarth mover's.

Having the computed attributes and the computed distance measures, adetermination can be made as to whether or not an incoming 3D object issimilar enough to a previously printed 3D object whose previouslygenerated print recipe 118 is stored in memory 106. Whether two suchobjects are similar enough to one another can be calculated (i.e.,determined) based on given error tolerances that can be supplied withthe incoming 3D object model data supplied by a user. When an incomingobject matches with attributes of a previously printed object, theprevious print recipe 118 associated with the previously printed objectcan be retrieved from the store of previous print recipes in memory 106.The retrieved print recipe can then be used to control the printing ofthe new, incoming 3D object. When there is no match between an incomingobject and any previously printed object, instructions within the printrecipe module 110 can be executed to generate a new print recipe to usefor printing the new, incoming 3D object.

Once an incoming 3D object has been processed, the corresponding results(e.g., attribute value distributions, etc.) can be saved in the memory106 as part of the metadata associated with the part. Thus, the computedobject attributes for the new object can be stored in memory 106 as partof the previous object attributes 116. The printing recipe associatedwith the new object, whether it has been retrieved based on an objectmatch or it has been newly generated, can also be saved in the memory106 in the previous print recipes 118. The attributes and printingrecipe can be associated as a key-value pair.

FIGS. 8, 9, and 10, are flow diagrams showing example methods 800, 900,and 1000, for processing a 3D object. Methods 800, 900, and 1000, areassociated with examples discussed above with regard to FIGS. 1-7, anddetails of the operations shown in methods 800, 900, and 1000, can befound in the related discussion of such examples. The operations ofmethods 800, 900, and 1000, may be embodied as programming instructionsstored on a non-transitory, machine-readable (e.g.,computer/processor-readable) medium, such as memory 106 shown in FIG. 1.In some examples, implementing the operations of methods 800, 900, and1000, can be achieved by a processor, such as a processor 104 of FIG. 1,reading and executing the programming instructions stored in a memory106. In some examples, implementing the operations of methods 800, 900,and 1000, can be achieved using an ASIC and/or other hardware componentsalone or in combination with programming instructions executable by aprocessor 104.

The methods 800, 900, and 1000, may include more than oneimplementation, and different implementations of methods 800, 900, and1000, may not employ every operation presented in the respective flowdiagrams of FIGS. 8, 9, and 10. Therefore, while the operations ofmethods 800, 900, and 1000, are presented in a particular order withintheir respective flow diagrams, the order of their presentations is notintended to be a limitation as to the order in which the operations mayactually be implemented, or as to whether all of the operations may beimplemented. For example, one implementation of method 800 might beachieved through the performance of a number of initial operations,without performing one or more subsequent operations, while anotherimplementation of method 800 might be achieved through the performanceof all of the operations.

Referring now to the flow diagram of FIG. 8, an example method 800 ofprocessing a 3D object begins at block 802 with receiving a 3D objectmodel representing an object to be processed. Continuing at block 804,object attributes for the object can be computed. As shown at block 806,computing object attributes can include computing a geometric attributeof the object. Computing a geometric attribute of the object can includenormalizing an alignment of the object as shown at block 808. A processfor normalizing the alignment of the object, as shown at block 808, caninclude orienting the object on a 3D coordinate system, computing acenter of mass of the object, translating the object such that thecenter of mass is placed at the origin of the 3D coordinate system,rotating the object about the origin such that a shortest dimension ofthe object is aligned with a Z axis of the 3D coordinate system,rotating the object about the Z axis such that a longest dimension ofthe object is aligned with an X axis of the 3D coordinate system, andcomputing a minimum bounding box for the object. In some examples,normalization can also include linearly scaling the bounding box suchthat the bounding box comprises a unit length.

Continuing at block 810, the method 800 can include computing materialproperty attributes of the object. As shown at block 812, computing suchmaterial property attributes can include slicing the object into layersperpendicular to the Z axis with a resolution of a voxel, dividing eachlayer into N-by-N voxels, computing two-dimensional (2D) bounding boxesfor each layer of the object, and computing minimum and maximum valuesof attributes for the whole object, for each layer of the object, andfor each voxel.

As shown at block 814, the method 800 can include comparing the objectattributes with stored object attributes. In some examples, comparingthe object attributes comprises determining if each object attributefalls within an error tolerance of a corresponding stored objectattribute, as shown at block 816. The method also includes retrieving aprevious print recipe associated with stored object attributes thatmatch the object attributes, as shown at block 818. When comparingobject attributes with stored object attributes does not provide amatch, the method further includes generating a print recipe for theobject, storing the object attributes and the print recipe, andassociating the object attributes with the print recipe.

Referring now to the flow diagram of FIG. 9, another example method 900of processing a 3D object begins at block 902 with receiving a digitaldata representing a new object to be printed. As shown at block 904, thealignment of the new object can be normalized to enable a comparison ofattributes of the new object with previous object attributes stored in amemory of the system. New object attributes can be computed, which caninclude computing a new object bounding box, as shown at blocks 906 and908, respectively. As shown at block 910, attributes of the new objectcan be compared with previous object attributes. Comparing attributescan include, for example, comparing the new object bounding box withprevious bounding boxes stored in the memory, comparing additionalattributes of the new object when a previous bounding box matches thenew object bounding box, and stopping the comparing of attributes whenno previous bounding box matches the new object bounding box, as shownat block 912.

Continuing at block 914, a print recipe associated with previous objectattributes can be retrieved when a match is found between the new objectattributes and the previous object attributes. The new object can beprinted using the retrieved print recipe, as shown at block 916. In someexamples, as shown at block 918, when no match is found between the newobject attributes and the previous object attributes, a new print recipefor the new object can be generated. The new object can then be printedusing the new print recipe, as shown at block 920. Printing the newobject using the new print recipe can include processing the new printrecipe to generate instructions executable by a controller of thesystem, and executing the instructions on the controller to control aprint engine of the system to produce the new object comprising thecomputed attributes of the new object, as shown at block 922.

The method can also include storing the new object attributes and thenew print recipe in a memory of the system, and associating the newobject attributes and the new print recipe with one another as akey-value pair, as shown at blocks 924 and 926, respectively.

Referring now to the flow diagram of FIG. 10, another example method1000 of processing a 3D object begins at block 1002 with receiving a 3Dobject model representing an object to be processed. As shown at block1004, the method 1000 can include computing object attributes of theobject. The object attributes can then be compared with stored objectattributes, as shown at block 1006. The method can then includeretrieving a previous print recipe associated with stored objectattributes that match the object attributes, as shown at block 1008.

What is claimed is:
 1. A method of processing a 3D object, comprising:receiving a 3D object model representing an object to be processed;computing object attributes of the object; comparing the objectattributes with stored object attributes; and, retrieving a previousprint recipe associated with stored object attributes that match theobject attributes.
 2. A method as in claim 1, further comprising, whenthe comparing does not provide a match: generating a print recipe forthe object; storing the object attributes and the print recipe; and,associating the object attributes with the print recipe.
 3. A method asin claim 1, wherein comparing the object attributes with stored objectattributes comprises determining if each object attribute falls withinan error tolerance of a corresponding stored object attribute.
 4. Amethod as in claim 1, wherein computing object attributes comprises:computing a geometric attribute of the object; and, computing materialproperty attributes of the object.
 5. A method as in claim 4, whereincomputing a geometric attribute of the object comprises normalizing analignment of the object through a default alignment according toinformation from the 3D object model.
 6. A method as in claim 5, whereinnormalizing an alignment of the object comprises: orienting the objecton a 3D coordinate system; computing a center of mass of the object;translating the object such that the center of mass is placed at theorigin of the 3D coordinate system; rotating the object about the originsuch that a shortest dimension of the object is aligned with a Z axis ofthe 3D coordinate system; rotating the object about the Z axis such thata longest dimension of the object is aligned with an X axis of the 3Dcoordinate system; and, computing a minimum bounding box for the object.7. A method as in claim 6, wherein normalizing an alignment of theobject further comprises linearly scaling the bounding box such that thebounding box comprises a unit length.
 8. A method as in claim 6, whereincomputing material property attributes of the object comprises: slicingthe object into layers perpendicular to the Z axis with a resolution ofa voxel; dividing each layer into N-by-N voxels; computingtwo-dimensional (2D) bounding boxes for each layer of the object; and,computing minimum and maximum values of attributes for the whole object,for each layer of the object, and for each voxel.
 9. A non-transitorymachine-readable storage medium storing instructions that when executedby a processor of a system for processing a 3D object, cause the systemto: receive digital data representing a new object to be printed;normalize an alignment of the new object to enable a comparison ofattributes of the new object with previous object attributes stored in amemory of the system; compute attributes of the new object; compareattributes of the new object with previous object attributes; retrieve aprint recipe associated with previous object attributes when a match isfound between the new object attributes and the previous objectattributes; and, print the new object using the print recipe.
 10. Amedium as in claim 9, the instructions further causing the system to:generate a new print recipe for the new object when no match is foundbetween the new object attributes and the previous object attributes;and, print the new object using the new print recipe.
 11. A medium as inclaim 10, the instructions further causing the system to: store the newobject attributes and the new print recipe in a memory of the system;and, associate the new object attributes and the new print recipe withone another as a key-value pair.
 12. A medium as in claim 9, wherein:computing attributes of the new object comprises computing a new objectbounding box; and, comparing attributes comprises comparing the newobject bounding box with previous bounding boxes stored in the memory,comparing additional attributes of the new object when a previousbounding box matches the new object bounding box, and stopping thecomparing of attributes when no previous bounding box matches the newobject bounding box.
 13. A medium as in claim 10, wherein printing thenew object using the new print recipe comprises: processing the newprint recipe to generate instructions executable by a controller of thesystem; and executing the instructions on the controller to control aprint engine of the system to produce the new object comprising thecomputed attributes of the new object.
 14. A 3D printing system forprocessing a 3D object, comprising: a memory device comprising previousobject attributes and associated previous object print recipes frompreviously processed 3D objects; and, a processor programmed withinstructions from an attribute module executable to compute attributesof an incoming object model representing a new 3D object, and to comparethe incoming object attributes with the previous object attributes andretrieve a previous object print recipe when a match is found.
 15. A 3Dprinting system as in claim 14, further comprising a 3D print engine toprint the new 3D object based on the retrieved previous object printrecipe.